package com.monitor.model;

import java.util.ArrayList;
import java.util.List;

/**
 * 服务器状态模型类
 * 存储单个服务器的监控结果数据
 */
public class ServerStatus {
    private ServerConfig server;     // 服务器配置
    private boolean online;          // 是否在线（修改属性名以匹配getter/setter）
    private String errorMessage;     // 错误信息
    private String cpuUsage;         // CPU使用率
    private String memoryInfo;       // 内存使用情况
    private List<DiskInfo> diskInfoList = new ArrayList<>(); // 磁盘使用情况
    private String systemLoad;       // 系统负载
    private String processCount;     // 进程数量
    private String uptime;           // 系统运行时间
    private String networkConnections; // 网络连接
    private String systemLogs;       // 系统日志
    private List<ServiceStatus> services = new ArrayList<>(); // 服务状态列表
    private String appStatus;        // 应用状态
    private boolean appRunning;      // 应用是否运行

    /**
     * 磁盘信息内部类
     */
    public static class DiskInfo {
        private String mountPoint;  // 挂载点
        private String total;       // 总容量
        private String used;        // 已用容量
        private String percentage;  // 使用百分比

        public String getMountPoint() {
            return mountPoint;
        }

        public void setMountPoint(String mountPoint) {
            this.mountPoint = mountPoint;
        }

        public String getTotal() {
            return total;
        }

        public void setTotal(String total) {
            this.total = total;
        }

        public String getUsed() {
            return used;
        }

        public void setUsed(String used) {
            this.used = used;
        }

        public String getPercentage() {
            return percentage;
        }

        public void setPercentage(String percentage) {
            this.percentage = percentage;
        }
    }
    
    /**
     * 服务状态内部类
     */
    public static class ServiceStatus {
        private String name;     // 服务名称
        private String status;   // 状态描述
        private boolean isRunning; // 是否运行中
        
        public String getName() {
            return name;
        }
        
        public void setName(String name) {
            this.name = name;
        }
        
        public String getStatus() {
            return status;
        }
        
        public void setStatus(String status) {
            this.status = status;
        }
        
        public boolean isRunning() {
            return isRunning;
        }
        
        public void setRunning(boolean running) {
            isRunning = running;
        }
    }

    /**
     * 构造函数，初始化服务器配置
     * @param server 服务器配置
     */
    public ServerStatus(ServerConfig server) {
        this.server = server;
    }

    /**
     * 获取服务器配置
     * @return 服务器配置
     */
    public ServerConfig getServer() {
        return server;
    }

    /**
     * 设置服务器配置
     * @param server 服务器配置
     */
    public void setServer(ServerConfig server) {
        this.server = server;
    }

    /**
     * 判断服务器是否在线
     * @return 是否在线
     */
    public boolean isOnline() {
        return online;  // 使用修改后的属性名
    }

    /**
     * 设置服务器在线状态
     * @param online 是否在线
     */
    public void setOnline(boolean online) {
        this.online = online;  // 使用修改后的属性名
    }

    /**
     * 获取错误信息
     * @return 错误信息
     */
    public String getErrorMessage() {
        return errorMessage;
    }

    /**
     * 设置错误信息
     * @param errorMessage 错误信息
     */
    public void setErrorMessage(String errorMessage) {
        this.errorMessage = errorMessage;
    }

    /**
     * 获取CPU使用率
     * @return CPU使用率
     */
    public String getCpuUsage() {
        return cpuUsage;
    }

    /**
     * 设置CPU使用率
     * @param cpuUsage CPU使用率
     */
    public void setCpuUsage(String cpuUsage) {
        this.cpuUsage = cpuUsage;
    }

    /**
     * 获取内存使用情况
     * @return 内存使用情况
     */
    public String getMemoryInfo() {
        return memoryInfo;
    }

    /**
     * 设置内存使用情况
     * @param memoryInfo 内存使用情况
     */
    public void setMemoryInfo(String memoryInfo) {
        this.memoryInfo = memoryInfo;
    }

    /**
     * 获取磁盘使用情况列表
     * @return 磁盘使用情况列表
     */
    public List<DiskInfo> getDiskInfoList() {
        return diskInfoList;
    }

    /**
     * 设置磁盘使用情况列表
     * @param diskInfoList 磁盘使用情况列表
     */
    public void setDiskInfoList(List<DiskInfo> diskInfoList) {
        this.diskInfoList = diskInfoList;
    }

    /**
     * 获取系统负载
     * @return 系统负载
     */
    public String getSystemLoad() {
        return systemLoad;
    }

    /**
     * 设置系统负载
     * @param systemLoad 系统负载
     */
    public void setSystemLoad(String systemLoad) {
        this.systemLoad = systemLoad;
    }

    /**
     * 获取进程数量
     * @return 进程数量
     */
    public String getProcessCount() {
        return processCount;
    }

    /**
     * 设置进程数量
     * @param processCount 进程数量
     */
    public void setProcessCount(String processCount) {
        this.processCount = processCount;
    }

    /**
     * 获取系统运行时间
     * @return 系统运行时间
     */
    public String getUptime() {
        return uptime;
    }

    /**
     * 设置系统运行时间
     * @param uptime 系统运行时间
     */
    public void setUptime(String uptime) {
        this.uptime = uptime;
    }

    /**
     * 获取网络连接情况
     * @return 网络连接情况
     */
    public String getNetworkConnections() {
        return networkConnections;
    }

    /**
     * 设置网络连接情况
     * @param networkConnections 网络连接情况
     */
    public void setNetworkConnections(String networkConnections) {
        this.networkConnections = networkConnections;
    }

    /**
     * 获取系统日志
     * @return 系统日志
     */
    public String getSystemLogs() {
        return systemLogs;
    }

    /**
     * 设置系统日志
     * @param systemLogs 系统日志
     */
    public void setSystemLogs(String systemLogs) {
        this.systemLogs = systemLogs;
    }
    
    /**
     * 获取服务状态列表
     * @return 服务状态列表
     */
    public List<ServiceStatus> getServices() {
        return services;
    }
    
    /**
     * 设置服务状态列表
     * @param services 服务状态列表
     */
    public void setServices(List<ServiceStatus> services) {
        this.services = services;
    }

    /**
     * 获取应用状态
     * @return 应用状态描述
     */
    public String getAppStatus() {
        return appStatus;
    }

    /**
     * 设置应用状态
     * @param appStatus 应用状态描述
     */
    public void setAppStatus(String appStatus) {
        this.appStatus = appStatus;
    }

    /**
     * 判断应用是否运行
     * @return 是否运行
     */
    public boolean isAppRunning() {
        return appRunning;
    }

    /**
     * 设置应用是否运行
     * @param appRunning 是否运行
     */
    public void setAppRunning(boolean appRunning) {
        this.appRunning = appRunning;
    }
} 